package lol.clann.minecraft.springboot.api.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 一个缓存节点,开发者可以指定expireAfterCreate/expireAfterUpdate/expireAfterRead 来控制缓存的有效期
 * @author pyz
 * @date 2019/6/1 7:02 PM
 */
@Getter
@Setter
@ToString
public class CacheItem<T> {
    /**
     * 节点数据
     */
    private T data;
    /**
     * 节点存入缓存的事件
     * 纳秒
     * 由CacheServer设置,开发者不用管
     */
    private long created;
    /**
     * 节点剩余存活时间
     * 剩余存活时间 纳秒
     * 每次从缓存中get出来时,CacheServer会更新此值
     */
    private long lifeTime;
    /**
     * 纳秒
     */
    private long expireAfterCreate = Long.MAX_VALUE;
    /**
     * 纳秒
     * -1表示忽略此项
     */
    private long expireAfterUpdate = -1;
    /**
     * 纳秒
     * -1表示忽略此项
     */
    private long expireAfterRead = -1;
}
